home *** CD-ROM | disk | FTP | other *** search
- *******************************************************************************
- * Parallel Printer Output
- * ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- * Will send ascii text to parallel port via hardware control. For use
- * when system is not available for text redirection to printer.
- *
- * INPUTS ; a0 = Ptr to ASCIIZ Text to print
- * OUTPUTS; d0 = Error code.. if d0 =-1 the printing was aborted
- * ELSE d0=0 All text printed okay
- *******************************************************************************
-
- PrintTest: lea PrintText(pc),a0 ; ptr to text to print
- bsr.s PrintAscii
- rts
-
- PrintAscii: movem.l a1-a3/d1-d2,-(sp) ;preserve trashed regs
- lea $bfd000,a2 ; Ptr to Print signal clear
- lea $1101(a2),a1 ; Ptr to Data Direction B
- lea $200(a1),a3 ; Ptr to Data Register B
- moveq #0,d0 ; erase d0
- move.l d0,d1 ; erase d1
- move.b (a3),d1 ; save (PIAA) Data Direction B
- move.b (a1),d2 ; save (PIAA) Data Register B
- move.b #-1,(a3) ; set printer direction
-
- ByteLoop: move.b (a0)+,d0 ; read a byte character to print
- beq.s PrintDone ; was it a NULL byte.. end of text?
- PrintChar move.b d0,(a1) ; move data dir for parallel interface
-
- PrtWait btst #6,-$100(a1) ; left mouse ?
- beq.s PrintAborted ; if pressed abort printing...
-
- btst d1,(a2) ; wait until print signal clear
- bne.s PrtWait ; has byte been printed?
- bra.s ByteLoop ; keep on looping
-
- PrintAborted: move.w #$f0f,$dff180
- moveq #-1,d0 ; d0=error code
- PrintDone move.b d1,(a3) ; restore old PIAA Data Direction B
- move.b d2,(a1) ; restore old PIAA Data Register B
- movem.l (sp)+,a1-a3/d1-d2 ; restore trashed registers
- rts
-
- PrintText: dc.b $a,'Parallel Printer TEST! 1234567890 Parallel Printer TEST! 1234567890 '
- dc.b 0
-